package com.chuanyun.wechatcheckin.model.wechat;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * 企业微信获取打卡记录响应
 */
@Data
public class CheckinDataResponse {
    
    /**
     * 错误码，0表示成功
     */
    @JsonProperty("errcode")
    private Integer errCode;
    
    /**
     * 错误信息
     */
    @JsonProperty("errmsg")
    private String errMsg;
    
    /**
     * 打卡记录数据列表
     */
    @JsonProperty("checkindata")
    private List<CheckinRecord> checkinData;
    
    /**
     * 判断是否成功
     */
    public boolean isSuccess() {
        return errCode != null && errCode == 0;
    }
    
    /**
     * 打卡记录详细信息
     */
    @Data
    public static class CheckinRecord {
        
        /**
         * 用户ID
         */
        @JsonProperty("userid")
        private String userId;
        
        /**
         * 打卡规则名称
         */
        @JsonProperty("groupname")
        private String groupName;
        
        /**
         * 打卡类型（上班打卡，下班打卡，外出打卡，仅记录打卡时间和位置）
         */
        @JsonProperty("checkin_type")
        private String checkinType;
        
        /**
         * 异常类型（时间异常，地点异常，未打卡，wifi异常，非常用设备）
         */
        @JsonProperty("exception_type")
        private String exceptionType;
        
        /**
         * 打卡时间（Unix时间戳）
         */
        @JsonProperty("checkin_time")
        private Long checkinTime;
        
        /**
         * 打卡地点标题
         */
        @JsonProperty("location_title")
        private String locationTitle;
        
        /**
         * 打卡地点详情
         */
        @JsonProperty("location_detail")
        private String locationDetail;
        
        /**
         * 打卡wifi名称
         */
        @JsonProperty("wifiname")
        private String wifiName;
        
        /**
         * 打卡备注
         */
        @JsonProperty("notes")
        private String notes;
        
        /**
         * 打卡的MAC地址/bssid
         */
        @JsonProperty("wifimac")
        private String wifiMac;
        
        /**
         * 打卡的附件media_id列表
         */
        @JsonProperty("mediaids")
        private List<String> mediaIds;
        
        /**
         * 位置打卡地点纬度（实际纬度的1000000倍）
         */
        @JsonProperty("lat")
        private Long lat;
        
        /**
         * 位置打卡地点经度（实际经度的1000000倍）
         */
        @JsonProperty("lng")
        private Long lng;
        
        /**
         * 打卡设备ID
         */
        @JsonProperty("deviceid")
        private String deviceId;
        
        /**
         * 标准打卡时间（Unix时间戳）
         */
        @JsonProperty("sch_checkin_time")
        private Long schCheckinTime;
        
        /**
         * 规则ID
         */
        @JsonProperty("groupid")
        private Integer groupId;
        
        /**
         * 班次ID
         */
        @JsonProperty("schedule_id")
        private Integer scheduleId;
        
        /**
         * 时段ID
         */
        @JsonProperty("timeline_id")
        private Integer timelineId;
    }
}